package com.nowoe.core.bean;

import java.util.Map;

/**
 * @author 倚栏听风 2023/9/16 10:14
 * bean工厂
 */
public interface BeanFactory {

    /**
     * 将某类型注入容器
     *
     * @param aClass
     */
    void register(Class<?> aClass);

    /**
     * 返回实例
     *
     * @param aClass
     * @param <T>
     * @return
     */
    <T> T getBean(Class<T> aClass);

    /**
     * 替换原始对象成代理对象
     *
     * @param aClass
     * @param proxyInstance
     */
    void replace(Class<?> aClass, Object proxyInstance);

    /**
     * 获取所有容器对象
     *
     * @return
     */
    Map<Class<?>, Object> getClassMap();


    void addPostProcessor(BeanPostProcessor postProcessor);


}
